package util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class RedXml {
	private HashMap<String, String> trances = new HashMap<String, String>();
	/**
	 * 根据配置文件，初始化容器环境
	 * @param xml
	 */
	public RedXml(String xmlName, String sys) throws Exception {
		/*
		 * 读取遍历配置文件，根据配置文件中的信息
		 * 动态加载类，动态创建对象，将对象缓存到
		 * trances集合中
		 */
		//导入dom4j 读取XML文件
		SAXReader reader = new SAXReader();
		//getClass().getClassLoader()
		//.getResourceAsStream(文件名) 
		// 从"包"中读取文件, 文件在"包"中!!!
		//System.out.println("路径："+getClass().getClassLoader().toString());
		Document doc= reader.read(getClass().getClassLoader().getResourceAsStream(xmlName));
		//解析XML的内容
		//System.out.println(doc.asXML());
		//访问根元素 
		Element root = doc.getRootElement();
		//二级系统类元素
		List<Element> list = root.elements();
		Map<String,Element> mapSys = new HashMap<String,Element>();
		//遍历二级存map
		for(Element e:list){
			//读取sys_no属性的值，作为项目名
			String sys_no = e.attributeValue("sys_no");
			//
			mapSys.put(sys_no, e);
		}
		//得到需要的项目级别的element
		Element sysE = mapSys.get(sys);
		List<Element> listTrances = sysE.elements();
		//遍历最里层
		for (Element e : listTrances) {
			String trance_code = e.attributeValue("trans_code");
			String trance_path = e.attributeValue("process");
			this.trances.put(trance_code, trance_path);
		}
	}
	
	public Map<String, String> getTrancePath(){
		//从beans集合中查找id对应的对象
		return this.trances;
	}
}
